home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
smaltalk
/
manchest.lha
/
MANCHESTER
/
usenet
/
st80_pre4
/
pretty-print
/
smalltalkToTexMacro.doc
< prev
next >
Wrap
Text File
|
1993-07-24
|
29KB
|
894 lines
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%% smalltalkToTexMacro.doc %%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%% FAST START %%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% If you want to get started really quickly just type:
% tex example1.tex
%
% alternatively if you have the latex or texinfo formats/macros
% you can type:
% latex example2.latex
% tex example3.texinfo
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%% INTRODUCTION %%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% SmalltalkToTex can take a standard chunk format file and format
% it VERY NICELY and INFORMATIVELY for printing. You can either
% print a Smalltalk file independently (a source listing) or
% include the Smalltalk code in another TeX document.
% These macros will enable you to:
%
% * print: class name, class hierarchy, version,
% print-time, and page numbers in headers and footers.
%
% * recognize and format comments, method categories, message
% selectors and parameters, and special characters
%
% * do some unusual nice formatting: methods will tend not to
% break between pages, long lines will wrap indented
%
% * print your document in multiple ways: one or two column,
% different section formatting, different headers, etc.
%
% * communicate information to your main document: for
% creating an index of message selectors, table of
% contents, etc.
%
% As an example of including code in another document, a document
% using Texinfo from the Free Software Foundation can (trivially)
% include your smalltalk code and have a table of contents listing
% all your classes and method categories, and have an index of all
% your message selectors.
%
% Latex documents have similar functionality (although indexing would
% depend on your local styles).
% To get access to all the information in your Smalltalk document
% you will have to add `Chunk Comments' that include commands
% to TeX, but these comments will not affect Smalltalk's ability
% to parse your file. The comments are not required, so a standard
% change log can be printed with almost full functionality.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% THE FILES %%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% To TeX a Smalltalk file using these macros requires three files.
% The first is the Smalltalk file, the second is a Formatting file,
% and the final file is this file itself.
%
% The Smalltalk and Formatting files handle different functions.
% The Smalltalk file describes the document (the source text itself
% plus possibly other information), and the Formatting file describes
% how you want it printed. You could have multiple Formatting files
% to print the document in different ways, and one of them could
% be another TeX document that wants to import the Smalltalk source
%
%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% SMALLTALK FILE %%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%
% The Smalltalk file can be in two different forms:
% 1) A raw chunk format file -- no changes
% 2) A chunk format file with TeX comments
%
% The choice between the forms will depend on how whether you want to
% modify your Smalltalk environment in trade for more informative
% (or simply nicer) printing. In terms of changes to Smalltalk:
%
% Level 1 requires no changes.
%
% Level 2 requires adding information when filing out a class,
% but it can still be read in normally.
%
%
% In general if you can file out a class at Level 2,
% you should do so since reading it in should not be a problem.
% But if you have a file at level 1, you can print that nicely also.
%%%%%% Printing Groups - FYI %%%%%%%%%%
% There are two groups of printing abilities, the basic-information
% group (the next word is 'and') and the higher-information
% group. Actually the basic information group includes knowing
% where comments start, how to wrap long lines, etc. Higher
% information includes the seperation of methods, what the class
% name is, what to index the method selector under, etc. The
% seperation between the two levels is not very clear (nor very
% important as it turns out), but it is mostly that no real
% non-text structure is available at the basic-level.
%
% Samples of how these information groups are used in formatting
% a file are:
% Basic-information related formatting includes:
% 1) Converting characters ( _ = <leftarrow>)
% 2) Wrapping long lines flush right
% 3) Formatting comments, selectors, etc.
% 4) Two-column mode
% and a number of other features...
%
% Higher-information related formatting includes:
% 1) Printing information in headers and footers
% 2) Creating Sectioning
% 3) Calling indexing routines (none are included but
% you can call Texinfo or LaTeX routines).
% 4) Class seperation (page breaking between classes)
% 5) Avoiding methods being broken between pages
%
%
% Basic information is needed to print the file nicely at all,
% but the higher information is what we really want.
%
%%%%%%%%%% Level-1 Formatting %%%%%%%%%%
% From a standard smalltalk chunk format file, all the basic
% information can be determined and a surprising amount of
% higher level information as well.
%
% From a standard file these routines can determine:
% 1) Method Category sections
% 2) Method selectors and parameters
% 3) Method seperations
% 4) Print time
% 5) Page Numbers
%
% But it can not determine:
% 1) Where a new class starts
% (although if classes are seperated by file,
% you can just tell it)
% 2) Class name until after a Method Category section
% ------ Stop the presses, the above two can now be managed
% ------ with \findClasses, see the documentation below
% ------
% ------ also note that the class name is found at the first
% ------ method category section if you use
% ------ \useProcessingWithNoClasses or a similar command.
% 3) Superclass hierarchy
% 4) Version
% 5) Category
% 6) Comment sections
%
% unless given that information in ChunkComments.
%
%
% As an example a standard file containing a single class
% can format the method category sections, selectors, and
% comments (from the basic level). It can also include the
% category sections in headers, and print in two-column mode.
%
% Also, if importanted into another document it can add
% section entries to the table of contents and index entries
% for its message selectors
%
%
% but thats quite enough for most of us.
%%%% Level 2 Formatting: CHUNK COMMENTS %%%%
% We really need to be able to give TeX more information, and
% the way I propose to do that would not hurt the Smalltalk file
% at all.
% If some information is added to the Smalltalk file in chunk
% comments (example: "Chunk Comment"!)
% than the macro can do some nicer formatting. Chunk commands
% must occur as a normal Smalltalk chunk.
%
% The form of a chunk comment for TeX should be:
% "\TeXCommand
% ...various commands...
% "!
%
% NOTE: the '!' at the end of a chunk comment
% is neccesary for Smalltalk/V, but may not be
% for the other versions. These routines don't
% care either way.
%
% Inside the TeXCommand block are commands that tell TeX other
% attributes of the Smalltalk file. They do not tell TeX
% how to format the file, just information that can not
% be read from the file without understanding Smalltalk code.
%
% An example:
% "\TeXCommand
% \startClassDef{NewClass}{Object}
% \setCategory{Testing}
% \setVersion{2:10 PM on January 1st, 1991}
% \endClassDef
% "!
%
% This states that NewClass is a subclass of Object in category
% Testing with version information 2:10 PM ...1991.
% The \startClassDef and \endClassDef must bracket the class
% information (or the information will go on the wrong page).
%
% You could also add your own commands to this environment,
% for example to include diagrams with your output. The environment
% inside a \TeXCommand block is somewhat limited. That you can not
% use double quotes should be the only rule, but a number of
% other characters are still active. If this is a problem send
% me a bug report.
%
%%%% Level 2 continued: SMALLTALK TeXCommands %%%%
% The following are the default available TeXCommands:
%
% \startClassDef{class}{superclass}
% \setHierarchy{{superclass}{super-superclass}{s^3}{s^4}}
% \setCategory{category}
% \setVersion{string}
% \setClassSection{section}
% \setClassSubsection{subsection}
% \endClassDef
%
% \class{class}{superclass}
%
% \startClassSection{section}
% \startClassSubsection{subsection}
%
% \setBangDoubled
% \setBangModal
% \readFile
% \startClassDef{class}{superclass}
% sets the current class to <class> and the superclass
% hierarchy to just <superclass>
% \setHierarchy{{s1}{s2}{s3}{s4}}
% sets the superclass hierarchy to an `array' from s1 to s4
% parameters can be skipped ex: \setHierarchy{{s1}{s2}}
% \setCategory{category}
% set the category
% \setVersion{string}
% set the version string (generally a date)
% \setClassSection{section}
% set the section for the class (Definition, Class Methods,etc)
% by default this is set to Definition at the start of
% defining a class
% \setClassSubsection{subsection}
% set the class subsection {Private, Accessing, etc.).
% generally used with Methods
% \endClassDef
% end the class definition and print a header
% \class{class}{superclass}
% is a shortHand for:
% \startClassDef{class}{superclass}\endClassDef
%
% \startSection{section}
% \startSubsection{subsection}
% start a new section/subsection in the middle of a document.
% Definition, Methods, Class Methods are usually generated
% automatically, but if you want a Comment section or a
% Summary section you can insert them this way...
%
% The next three commands should generally appear only at
% the start of a document, since they would presumably
% stay constant throughout. They could also be put in the
% Formatting file
%
%
% \setTabs{num}
% specify a tab character as representing <num> spaces
%
%
%
% \setBangDoubled
% \setBangModal
% change how a `!' is interpretted.
%
% Doubled bangs mean `!'s that occur in text (as opposed to the
% formatting bangs) will be doubled. These I replace with a single
% bang when encountered.
%
% Modal bangs mean bangs in text are not doubled, but must be
% recognized to be non-special when they occur in text or comment
% strings.
%
% As far as I can tell:
% Doubled !s are used by Smalltalk-80 and Smalltalk/V
% Modal !s are apparently used in Gnu-Smalltalk
% (That's why I added them)
%
% The default is doubled bangs, so you don't need to bother
% mentioning that in the file. In any case this can be handled in
% the TeX format file if unmentioned.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%% TeX FORMAT FILE %%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% The format file is neccesary to read in this macro file
% and then read in the Smalltalk file; at minimum it would
% contain three lines:
%
% \input smalltalkToTexMacro.tex
% \startAndRead{smalltalkChunkFile}
% \end
%
% The format file can also contain other commands between the
% \input and \startAndRead lines. These will effect how
% the file is read and printed. For example:
%
% \input smalltalkToTexMacro.tex
% \standardTwoColumnFormat
% \linenumberstrue
% \startAndRead{smalltalkChunkFile}
% \end
%
% will produce a two column format (on a portrait page) and
% show line numbers. A better example would be
%
% \input smalltalkToTexMacro.tex
% \standardTwoColumnFormat
% \setColumnWidth{4.5in}
% \setGutterSize{0.3in}
% \setHeight{6.7in}
% \startAndRead{smalltalkChunkFile}
% \end
%
% which would change the page to landscape dimensions: 9.3in by 6.7in.
% and skip the line numbering.
%
% The format file could also be another document (LaTeX or TeX) document
% and the formatting commands would surround the section where you wanted
% to import the smalltalk code.
%
%
%%%% FORMATTING COMMANDS %%%%
% The following are the default available formatting commands:
%
% \setBangDoubled
% \setBangModal
% \readFile
%
% the above three were documented in the previous sections
%
% \startAndRead
%
% \findClasses
% \dontFindClasses
%
% \formatMethods
% \dontFormatMethods
%
% \useEightPointFonts
% \useTenPointFonts
% \useLatexFonts
% \useTexFonts
%
% \useCenteredTitles
% \useLeftThirdTitles
% \useLatexTitles
% \useTexinfoTitles
%
% \standardOneColumnFormat
% \standardTwoColumnFormat
% \standardLatexFormat
% \standardTexFormat
% \standardTexinfoFormat
%
% \fromTexDocument
% \fromLatexDocument
% \fromTexinfoDocument
%
% \linenumberstrue
% \linenumbersfalse
%
% \setColumnWidth{width}
%
% \useOneColumnOutput
% \useTwoColumnOutput
%
% \useSimpleFooter , ...B
% \useOneColumnFooter
% \useTwoColumnFooter , ...B
%
% \setGutterSize{gutter}
% \setHeight{height}
% \setOffset{xoff}{voff}
% There could be many additions and revisions to the formatting
% commands depending on your personal preferences
% \startAndRead
% not likely to change this. Set up smalltalk verbatim mode
% and read in the file
%
% \findClasses
% \dontFindClasses
% \findClasses will turn on attempting to find the start
% of a class definition and use the \class command if it
% finds it. This should only be used with files that don't
% have TeXCommands in it (since they already mention the
% beginning of a class). Also, the very first class in a file
% is not found by this routine, so say \class{file}{super} before
% the \startAndRead for that class.
%
% \findClasses will fail if a comment (without a ! at the end)
% precedes the class start. I do not know how much it slows
% down the program. The default is \dontFindClasses.
% \formatMethods
% \dontFormatMethods
% \formatMethods will find the start of method headers and
% process the selector and parameters. It finishes and calls
% \doneMethod with token strings set up to be used for
% formatting, indexing, etc. Generally you would use one
% of the default \doneMethod-s, but it is easy to modify
% them.
%
% \useEightPointFonts
% \useTenPointFonts
% set up the fonts for eight and ten point text
% includes setting the line spacing and skip sizes
%
% \useLatexFonts
% \useTexFonts
% use the current Latex or Tex fonts for TeXing the Smalltalk
% source. Doesn't affect line spacing, or math fonts
%
% \useTexFonts makes all fonts the same size, although
% different styles, so it is not very useful. If you
% are calling from a TeX document, preferably use the
% point size commands or define your own font
% format. There is no \useTexinfoFonts since that would
% make even less sense (at least to me)
%
% \useCenteredTitles
% \useLeftThirdTitles
% set standard formats for the display macros:
% \classDefined is called by the \endDefClass command
% \printTitle used by the default classDefined
% \metaMethods found a !<Class> class methods!
% \classMethods found a !<Class> methods!
% \metaMethodsCat found a !<Class> class methodsFor: '<cat>'!
% \classMethodsCat found a !<Class> methodsFor: '<cat>'!
% \doneMethod found and processed a method header
%
% left third looks better in twoColumn formats (since Smalltalk
% lines tend to be short)
%
% \useLatexTitles
% causes the above formats to call the latex \section (for \printTitle)
% and \subsection (for \...Methods...) commands. These also
% call a \setparstuff after the LaTeX commands to fix the paragraphs
% for the code. If you want different LaTeX calls, just make
% a new version of this macro, or redefine the displaying macros
%
% \useTexinfoTitles
% similar to above but for Texinfo.
% \useProcessingWithNoClasses
% alternate processing of \...Methods... that make sense if no
% class groupings are available. Should be called after one of the
% above routines.
%
% \useAlternateDoneMethodA
% alternate processing of \doneMethod that ignores multiple lines
% after the message header, and creates index entries for Texinfo.
% This is mostly as an example of alternate methods.
% \standardOneColumnFormat
% \standardTwoColumnFormat
% \standardLatexFormat
% \standardTexFormat
% \standardTexinfoFormat
% sets a number of variables that make sense for printing
% a useOneColumnOutput, useTwoColumnOutput, or including in a Latex
% file. Find the macros below to see what they set.
%
% \fromTexDocument
% \fromLatexDocument
% \fromTexinfoDocument
% sets up for importing into another document
% all automatically call the above \standard equivalent
%
% \linenumberstrue
% \linenumbersfalse
% turns on or off printing line numbers from start of document
% You could reset the line number at each method by setting
% \lineno=1 in a modified version of \doneMethod
% \setColumnWidth{width}
% sets each text column on the page to width, if
% your page is already set up (calling from another
% document) you should call this routine with your
% default value to set the hanging paragraph values
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% The next set of commands are output related and should %%
%% not be used with LaTeX or inside your own document format, %%
%% unless you understand their macros fully. %%
%% %%
%% Do read the section FOOTERS/HEADERS and examine the footer %%
%% macros to see how to get page information into your %%
%% documents footers and headers. I haven't tested yet whether%%
%% these work in LaTeX %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \useOneColumnOutput
% \useTwoColumnOutput
% set the output routines two one column or two columns
% \setGutterSize{gutter}
% sets the gutter (of a multi-column format)
%
% the total page size will be:
% total = width + ((columns-1) * (gutter + width))
%
% \setHeight{height}
% the height of the page
%
% \setOffset{xoff}{voff}
% move the offset of the printed page by:
% xoff to the right
% voff downward
% \useSimpleFooter , ...B
% \useOneColumnFooter
% \useTwoColumnFooter , ...B
% set the footer of the page, useSimpleFooter only uses a page
% number and a print time, the other two are fancier.
%
% fancy headers can be defined also, using the same methods
% as for the footers, but setting \headline instead of \footline
%
% FOOTERS/HEADERS:
% To reference values passed by Smalltalk (class, version, etc)
% in footer or headers you should use \page... commands.
% These will produce the right values at the time the
% footer/header is printed.
%
% If a \page... command doesn't exist for what you want (i.e.
% a different kind of \pageHierarchy) you can create one by looking
% at the other \page... macros and using \get... macros in
% your new one.
%
% Footers are created when the page is output and look up
% information through items called `marks' that were put on
% the page when it was read in. This becomes moderately
% complicated, but is hidden away in the lower level macros.
%
%%%%%%%%%%%%%%%%%%%%%%%
%%%%% Other files %%%%%
%%%%%%%%%%%%%%%%%%%%%%%
% Although two main files will work for typesetting a Smalltalk
% document, what can work better is to have a log file written
% by Smalltalk listing the files of the most recent filed classes
% or methods. This file only contains \readFile{filename}
% commands where the filename-s are for the recently filed-out
% files. If you just filed out:
% Behavior.st
% Class.st
% MetaClass.st
%
% a file named fromSmalltalk.tex (for example) would contain:
% \readFile{Behavior.st}
% \readFile{Class.st}
% \readFile{MetaClass.st}
%
% and a format file texSmalltalk.tex would contain at least:
% \input smalltalkToTexMacro.tex
% \startAndRead{fromSmalltalk.tex}
% \end
%
% this would enable you to quickly TeX and print texSmalltalk.tex
% independent of what you just filed out. All the files
% would be formatted together, but the macros reset page numbers
% correctly anyway.
%
% The command:
%
% \readFile{filename}
% this reads in another Smalltalk file for typesetting
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%% Using from insidea a LaTeX or TeX document %%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% If you are using this macro from another document either
% in TeX, LaTeX, or Texinfo you should be aware of the
% following:
% The commands \fromTexDocument, \fromLatexDocument, and
% \fromTexinfoDocument handle most of these aspect for you,
% but you may want to change the environment.
% (Whenever I refer only to LaTeX in this section, I
% probably meant to refer to importing from any document
% environment but was lazy when I wrote it).
% Don't use the commands that would damage your document
% environment (like resetting the ship-out functions),
% unless you really want it to. In LaTeX these output
% commands should produce errors anyway. These were
% marked as special when mentioned above
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%% Class Ejecting %%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \classEject is called when ever a new class is started,
% but the first time is is called it does nothing, and
% `loads' its next eject form from \nextClassEject.
% \classEject should keep this form -- if you want to
% eject the page before starting the Smalltalk code,
% put the eject in your normal code (probably you wouldn't
% think to do otherwise, but it is important)
%
%
% In a normal TeX document, \classEject does what you want
% it to do.
% In a LaTeX document you should redefine \nextClassEject to
% \clearpage or \cleardoublepage or \cleardoublepageLeft
%
% \cleardoublepageLeft guarantees the following text will
% be on a left hand page (inserting blank pages if neeeded).
% It is defined (far) below if you want to put it with your
% own macros, or need to use it before you have read in this file.
%
%
% \fromLatexDocument defines \nextClassEject as \clearpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%% Mark routines %%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% These macros communicate to the output routine through
% \mark-s. This will interfere with LaTeX and possibly
% your own TeX mark routines. This is assumed to be a problem
% and I call \marksOff in the \from... commands.
%
% If you leave marks off and don't call your marking routines,
% you will simply leave the state of the marks constant.
%
% If you communicate to your mark routines during the smalltalk
% file input, you can use \print... commands to gain access to
% the smalltalk information.
%
%
% If you instead want different output routines during the smalltalk
% section and want to use the \page... commands in them, you can
% turn \marksOn during that period.
%
%
% Turning the \marksOn is not a problem as long as the two mark
% output environments are kept seperate. This only requires
% ejecting your old page before starting up the smalltalk file
% and ejecting the last smalltalk page before returning to your
% regular text. All the \page... commands will be available during
% the smalltalk pages, and the two types of marks won't interfere.
%
% If you turn \marksOn, you will need to change your output
% routines to use them. If you wrote your own, you know what
% to fix.
% If you are using LaTeX your file will need to do the following:
%
% eject the page
%
% 1) Save the old LaTeX mark values
% 2) change the output routines to use the desired information
% from the Smalltalk file
%
% read in the Smalltalk file
% eject the last Smalltalk page
%
% 3) Remark with the old values
% 4) Restore the old mark routines
%
% continue reading your normal file
%
% The last aspect 4) should be done by putting \begingroup before
% 1) and \endgroup after the eject (before or just after 3). Example
% code that does all this is for LaTeX:
%
%%%
%%% \begingroup
%%% %%% Save the old formatting commands, and set new ones
%%% \xdef\saveLeft{\leftmark} %must be global since it will be accessed
%%% \xdef\saveRight{\rightmark}%outside the group
%%%
%%% \def\leftmark{\pageClass\ \ddash\ Left} %or whatever you want
%%% \def\rightmark{Right\ \ddash\ \pageVersion} %
%%%
%%%
%%% \input smalltalkToTexMacro.tex
%%% \fromLatexDocument
%%% \marksOn
%%% %% other commands...
%%% \startAndRead{fromSmalltalk.tex}
%%%
%%% \eject
%%%
%%% %%% Restore the old format
%%% \markboth{\saveLeft}{\saveRight}
%%%
%%% \endgroup%return \leftmark, \rightmark back to normal
%%%
%
% ERRORS: If you see a `extra \or' error it is probably from
% not ejecting your page before the smalltalk page. My mark
% routines use a lot of \or-s in them.
%%%%% Summary for LaTex / other marking routines %%%%%%
% To summarize the LaTeX options, you could have:
% 1) \marksOff, and Smalltalk titles (like \useCenteredTitles)
% 2) \marksOff, and LaTeX/Your sectioning
% 3) \marksOn, and Smalltalk titles
% For:
% 1) you don't need to do anything special, but you lose access
% to output time access to Smalltalk information
%
% 2) you also don't need to do anything special, and get access
% to the info that was passed to the LaTeX sectioning, and
% which can include any of the \print... commands
%
% 3) you need to make sure the mark environments are separated,
% make new headers and footers for the style, and then return
% the environment back when returning to LaTeX. You have access
% to all the smalltalk values, but can't increment LaTeX sectioning
% (you do have access to the LaTeX information through \the...
% commands.
% To get the option use the following commands (assuming LaTeX)
% 1) \fromLatexDocument
%
% 2) \fromLatexDocument
% \useLatexTitles
%
% 3) \fromLatexDocument
% \marksOn
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%% Probably Irrelevant LaTeX Option %%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% At the moment I don't know why, but you might want to
% have the LaTeX marking command flow throught these
% macros commands. This would have the LaTeX \section,
% \subsection... commands calling the smalltalk routines
% and putting extra information into the smalltalk marks.
% Then when LaTeX reads the marks, (via \leftmark \rightmark),
% you would have access to all the information possible.
%
% So to summarize, this option uses LaTeX sectioning and
% output but flows through the smalltalk mark system...
% Documentation for the will be in "latexdoublemark.tex" and
% you should look at the routines called from that document
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%% Running TeX %%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% I will not attempt to describe how to use TeX at your
% site, you hopefully have documentation there. I will
% just make some comments about running TeX with these
% macros.
% You should not be surprised if TeX complains about
% `Underfull \hbox'. This is from wrapping long lines.
% I set the tolerance low enough so that TeX tries
% to make the wrapping compact and nice, so if TeX
% can't succeed it complains and tries again. The second
% pass I set the tolerance to infinity, so TeX won't
% mark you output file in any case. Since the bad
% wrapping is not really bad for our purposes, you
% can pretty much ignore it.
% Also TeX may complain about `Underfull \vbox'
% because it did not like any of the breaks it
% found for the current page. This also is not
% really a problem, but it can be remedied
% by changing the \sectionBreak-s vskip glue
% to allow more stretching and shrinking. This
% also has a benefit of making methods less
% likely to break across a page.
%
% You could also turn on \raggedbottom to
% aleviate this problem, if you prefer the
% resulting page breaks.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%% Final Documentation %%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% The examples are the best documentation for using
% these macros and the printouts for what they do,
% but if you need to modify them in any way, you will
% have to read the sections below.
%
% I tried order the groups from most likely to modify to least
% likely to modify, but they are grouped by function.
%